home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 1 / PC Actual CD 01.iso / f1 / mdisk25.arj / OPCIONES.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1994-09-29  |  6.0 KB  |  227 lines

  1. {$A+,B-,D-,E-,F-,G+,I+,L-,N-,O-,R-,S-,V+,X-}
  2. Unit Opciones;
  3.  
  4. { Opciones de MDiskpro (c) Emilio David Diaus López 1994 }
  5. {
  6. 8. Opciones: Tratamiento De Las Opciones Del Programa
  7.  
  8. Las Opciones Del Programa Se Manejan O Bien Por Medio De Una Caja
  9. De DiáLogo Donde Se Especifican Las Opciones O Por Medio De Un
  10. Fichero Llamado Mdisk.Ini Con El Siguiente Formato:
  11.           [Opciones]
  12.           Adaptador=0
  13.           Unidad=0
  14.           Copias=001
  15.           Verificar=0
  16.      En El Cual El Adaptador Puede Ser 0 O 1 Dependiendo De La
  17. ConfiguracióN Del Ordenador, Por Defecto Es El Adaptador 0.
  18.      Unidad Puede Ser Cualquier NúMero De Unidad Entre 0 Y 25
  19. Correspondientes A Las Unidades Desde A:  Hasta Z: Y Se Refiere
  20. A La Unidad Por Defecto Para Hacer Las Copias.
  21.      Copias Son El NúMero De Copias Del Disquete Que Se Van a
  22. Realizar.
  23.      Verificar Si Es Cero Es No Verificar La Copia Del Disquete
  24. Y En Caso De Que Tenga El Valor De Uno Si Verificar La Copia Del
  25. Disquete.
  26.  
  27.      En El Caso De Que Se Modifique Alguna OpcióN Del Programa
  28. AutomáTicamente Al Finalizar El Mismo Las Opciones Se Grabarán
  29. En El Fichero De ConfiguracióN .Ini.
  30. Utiliza Los DiáLogos EstáNdar De Turbo VisióN Para El Control De
  31. Las Opciones Que Son FáCilmente Modificables Por El Usuario.
  32. }
  33. Interface
  34. Uses Views,Dialogs,Mdhelp;
  35.  
  36. { tipo de registro de opciones }
  37. Type Topciones=Record
  38.       Adaptador,
  39.       Verificar,
  40.       Unidad:Word;
  41.       Copias:String;
  42.      End;
  43.  
  44. { Registro de opciones y flag de modificación de estas }
  45.  
  46. Var Opciones_Programa:Topciones;
  47.     Modif_Op:Boolean;
  48.  
  49. Procedure Muestra_Opciones;
  50.  
  51. Procedure Lee_Opciones(S:String);
  52.  
  53. Procedure Escribe_Opciones(S:String);
  54.  
  55. Implementation
  56. Uses Dos,Emiapp,Objects;
  57.  
  58. Function Fexists(Filename: String): Boolean;
  59. Var
  60.   Sr: Searchrec;
  61. Begin
  62.   {$I-}
  63.   Findfirst(Filename,Anyfile,Sr);
  64.   {$I+}
  65.   Fexists := (Doserror = 0) And
  66.    (Filename <> '');
  67. End;
  68.  
  69. Procedure Lee_Opciones(S:String);
  70. Var F:Text;
  71.     Linea:String;
  72.     Aux:String;
  73.     Codigo:Integer;
  74.  
  75.     { String a mayúsculas }
  76.  
  77.     Procedure Upstr(Var S:String);
  78.     Var B:Byte;
  79.     Begin
  80.        For B:=1 To Length(S) Do S[B]:=Upcase(S[B]);
  81.     End;
  82.  
  83.     { Lee una línea del fichero }
  84.     Procedure Leer_Linea;
  85.     Begin
  86.      If Not(Eof(F)) Then
  87.         Readln(F,Linea);
  88.      Upstr(Linea);
  89.     End;
  90.  
  91.     Label Salida,Salida2;
  92. Begin
  93.      Modif_Op:=False;
  94.  
  95.      { Opciones por defecto }
  96.      With Opciones_Programa Do Begin
  97.           Adaptador:=0;
  98.           Verificar:=0;
  99.           Unidad:=0;
  100.           Copias:='001';
  101.      End;
  102.      Assign(F,S);
  103.      {$I-}
  104.      If Not(Fexists(S)) Then Goto Salida;
  105.      Reset(F);
  106.      Leer_Linea;
  107.      If Linea<>'[OPCIONES]' Then Goto Salida;
  108.      Leer_Linea;
  109.      If Copy(Linea,1,10)<>'ADAPTADOR=' Then
  110.         Goto Salida
  111.      Else Begin
  112.           Aux:=Copy(Linea,11,Length(Linea)-10);
  113.           Val(Aux,Opciones_Programa.Adaptador,Codigo);
  114.      End;
  115.      If Not (Opciones_Programa.Adaptador In [0..1]) Then
  116.         Opciones_Programa.Adaptador:=0;
  117.      Leer_Linea;
  118.      If Copy(Linea,1,7)<>'UNIDAD=' Then
  119.         Goto Salida
  120.      Else Begin
  121.           Aux:=Copy(Linea,8,Length(Linea)-7);
  122.           Val(Aux,Opciones_Programa.Unidad,Codigo);
  123.      End;
  124.      If Not (Opciones_Programa.Unidad In [0..25]) Then
  125.         Opciones_Programa.Unidad:=0;
  126.      Leer_Linea;
  127.      If Copy(Linea,1,7)<>'COPIAS=' Then
  128.         Goto Salida
  129.      Else Begin
  130.           Aux:=Copy(Linea,8,Length(Linea)-7);
  131.           Opciones_Programa.Copias:=Aux;
  132.      End;
  133.      Leer_Linea;
  134.      If Copy(Linea,1,10)<>'VERIFICAR=' Then
  135.         Goto Salida
  136.      Else Begin
  137.           Aux:=Copy(Linea,11,Length(Linea)-10);
  138.           Val(Aux,Opciones_Programa.Verificar,Codigo);
  139.      End;
  140.      If  Opciones_Programa.Verificar>1 Then
  141.          Opciones_Programa.Verificar:=1;
  142.      Goto Salida2;
  143.      Salida:
  144.      Modif_Op:=True;
  145.      Salida2:
  146.      Close(F);
  147. End;
  148.  
  149. Procedure Escribe_Opciones(S:String);
  150. Var F:Text;
  151.     Aux:String;
  152. Begin
  153.      Assign(F,S);
  154.      Rewrite(F);
  155.      With Opciones_Programa Do Begin
  156.           Str(Adaptador,Aux);
  157.           Writeln(F,'[opciones]');
  158.           Writeln(F,'adaptador=',Aux);
  159.           Str(Unidad,Aux);
  160.           Writeln(F,'unidad=',Aux);
  161.           Writeln(F,'copias=',Copias);
  162.           Writeln(F,'verificar=',Chr(Ord('0')+Verificar));
  163.      End;
  164.      Close(F);
  165. End;
  166.  
  167. Procedure Muestra_Opciones;
  168. Var
  169.   Opdisco,Opad :       Pview;
  170.   Dialog: Pdialog;
  171.   R: Trect;
  172.   C: Word;
  173. Begin
  174.   R.Assign(5, 3, 56, 16);
  175.   Dialog := New(Pdialog, Init(R, 'Opciones de Disco'));
  176.   With Dialog^ Do
  177.   Begin
  178.   Helpctx := Hcopciones;
  179.   Options:=Options Or Ofcentered;
  180.     R.Assign(28, 3,44,5);
  181.     Opad:= New(Pradiobuttons, Init(R,
  182.       Newsitem('~P~rimario',
  183.       Newsitem('~S~ecundario',
  184.     Nil))));
  185.     Insert(Opad);
  186.     Opad^.Getbounds(R);
  187.     R.A.Y:=2;R.B.Y:=3;
  188.     Dec(R.A.X,2);
  189.     R.B.X:=R.A.X+23;
  190.     Insert(New(Plabel, Init(R, 'A~d~aptador por defecto',Opad)));
  191.     R.Assign(4, 3,21,5);
  192.     Opdisco:= New(Pradiobuttons, Init(R,
  193.       Newsitem('D~e~sactivada',
  194.       Newsitem('A~c~tivada',
  195.     Nil))));
  196.     Insert(Opdisco);
  197.     R.Assign(2, 2, 21,3);
  198.     Insert(New(Plabel, Init(R, '~V~erificación',Opdisco)));
  199.     R.Assign(4, 7,13,9);
  200.     Opdisco:= New(Pradiobuttons, Init(R,
  201.       Newsitem('~A~:',
  202.       Newsitem('~B~:',
  203.     Nil))));
  204.     Insert(Opdisco);
  205.     R.Assign(2, 6, 21,7);
  206.     Insert(New(Plabel, Init(R, '~U~nidad por defecto',Opdisco)));
  207.     R.Assign(28,7,33,8);
  208.     Opdisco:=New(Pinputline,Init(R,3));
  209.     Insert(Opdisco);
  210.     R.Assign(26, 6, 48,7);
  211.     Insert(New(Plabel, Init(R, '~N~úmero de copias',Opdisco)));
  212.     R.Assign(15, 10, 25, 12);
  213.     Insert(New(Pbutton, Init(R, '~O~k', Cmok, Bfdefault)));
  214.     R.Assign(28, 10, 42, 12);
  215.     Insert(New(Pbutton, Init(R, '~C~ancelar', Cmcancel, Bfnormal)));
  216.   End;
  217.   Dialog^.Setdata(Opciones_Programa);
  218.   C := Desktop^.Execview(Dialog);
  219.   If C <> Cmcancel Then Begin
  220.      Dialog^.Getdata(Opciones_Programa);
  221.      Modif_Op:=True;
  222.   End;
  223.   Dispose(Dialog, Done);
  224. End;
  225.  
  226. End.
  227.